﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.GUI.Base;
using VentaElectrodomesticos.Negocio;
using VentaElectrodomesticos.Datos;
using VentaElectrodomesticos.Contrato;

namespace VentaElectrodomesticos.AbmEmpleado
{
    public partial class FormEmpleado : BaseEdicion<EmpleadoNegocio,EmpleadoDAO,Empleado>
    {
        List<Provincia> provincias;
        List<TipoPersona> tipos;
        List<Sucursal> sucursales;

        public FormEmpleado()
        {
            InitializeComponent();
        }

        public void setProvincias(List<Provincia> provincias) {
            this.provincias = provincias;
            this.comboProvincia.Items.AddRange(this.provincias.ToArray());
        }

        public void setTipos(List<TipoPersona> tipos) {
            this.tipos = tipos;
            this.comboEmpleado.Items.AddRange(this.tipos.ToArray());
        }

        public void setSucursales(List<Sucursal> sucursales) {
            this.sucursales = sucursales;
            this.comboSucursal.Items.AddRange(this.sucursales.ToArray());
        }

        protected override void getValues()
        {
            this.Entity.Nombre = textNombre.Text;
            this.Entity.Apellido = textApellido.Text;
            this.Entity.Dni = textDni.Text;
            this.Entity.Email = textEmail.Text;
            this.Entity.Telefono = textTelefono.Text;
            this.Entity.Direccion = textDireccion.Text;
            this.Entity.Sucursal_Id = ((Sucursal)comboSucursal.SelectedItem).Id;
            this.Entity.Provincia_id = ((Provincia)comboProvincia.SelectedItem).Id;
            this.Entity.Tipo_Id = ((TipoPersona)comboEmpleado.SelectedItem).Id;
            this.Entity.inactivo = this.checkBoxInactive.Checked;

        }

        protected override void setValues()
        {
            this.textNombre.Text = this.Entity.Nombre;
            this.textApellido.Text = this.Entity.Apellido;
            this.textDni.Text = this.Entity.Dni;
            this.textEmail.Text = this.Entity.Email;
            this.textDireccion.Text = this.Entity.Direccion;
            this.textTelefono.Text = this.Entity.Telefono;
            if (this.Entity.inactivo == null)
            {
                this.Entity.inactivo = false;
            }
            this.checkBoxInactive.Checked = (Boolean)this.Entity.inactivo;

            foreach (Sucursal sucursal in sucursales) {
                if (sucursal.Id == this.Entity.Sucursal_Id)
                {
                    this.comboSucursal.SelectedItem = sucursal;
                    break;
                }
            }

            foreach (TipoPersona tipo in tipos)
            {
                if (tipo.Id == this.Entity.Tipo_Id)
                {
                    this.comboEmpleado.SelectedItem = tipo;
                    break;
                }
            }
            
            foreach (Provincia provincia in provincias)
            {
                if (provincia.Id == this.Entity.Provincia_id) {
                    this.comboProvincia.SelectedItem = provincia;    
                    break;
                }
            }
        }

        public override void changeLayout(bool edit)
        {
            base.changeLayout(edit);

            panelCreacion.Visible= !edit;
            panelEdicion.Visible = edit;
        }

        protected override void cumpleValidaciones()
        {
            if (!RegCondition.Condition(textDni, RegCondition.RegularExpressions.Numeric))
                this.Errores.Add("El DNI debe ser numérico, sin puntos");

            if (comboEmpleado.SelectedItem == null ) {
                this.Errores.Add("El empleado no es valido.");
            }

            if (comboProvincia.SelectedItem == null )
            {
                this.Errores.Add("La provincia no es valida.");
            }

            if (comboSucursal.SelectedItem == null)
            {
                this.Errores.Add("La surcursal no es valida.");
            }

            if(!this.edit) {
                if (!RegCondition.Condition(textApellido, RegCondition.RegularExpressions.Alphabet))
                    this.Errores.Add("El apellido no es válido");
                if (!RegCondition.Condition(textDireccion, RegCondition.RegularExpressions.Address))
                    this.Errores.Add("La dirección no es válida");
                if (!RegCondition.Condition(textEmail, RegCondition.RegularExpressions.eMail))
                    this.Errores.Add("El email no es válido");
                if (!RegCondition.Condition(textNombre, RegCondition.RegularExpressions.Alphabet))
                    this.Errores.Add("El nombre no es válido");
                if (!RegCondition.Condition(textTelefono, RegCondition.RegularExpressions.Telephone) || (!RegCondition.Condition(textTelefono, RegCondition.RegularExpressions.Numeric) && textTelefono.Text.Length >= 4))
                    this.Errores.Add("El teléfono no es válido");
            }
            
        }

    }
}
